package marketplace.web.beans;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import marketplace.ejb.interfaces.IContenidoDigitalEJB;
import marketplace.jpa.datas.DataRegistroAutorizacion;
import marketplace.jpa.datas.DataVersion;


@ManagedBean
@SessionScoped
public class RegistroAutorizacionBean {

	
	/////////////////////////// INYECCIONES //////////////////////////////
	
	
	@EJB	IContenidoDigitalEJB ejb;
	
	
	/////////////////////////// ATRIBUTOS //////////////////////////////
	
	
	private int idRegistro;
	private String fecha;
	private String estado;
	private String motivo;
	private DataVersion version;
	
	private String archivoVersion;
	
	
	/////////////////////////// COLECCIONES //////////////////////////////
	
	
	private List<DataRegistroAutorizacion> registros;
	private List<DataVersion> versionesAutorizar;

	
	/////////////////////////// GETERS & SETERS /////////////////////////////
	
	
	public int getIdRegistro() { return idRegistro; }
	public void setIdRegistro(int idRegistro) { this.idRegistro = idRegistro; }

	public String getFecha() { return fecha; }
	public void setFecha(String fecha) { this.fecha = fecha; }

	public String getEstado() { return estado; }
	public void setEstado(String estado) { this.estado = estado; }

	public String getMotivo() { return motivo; }
	public void setMotivo(String motivo) { this.motivo = motivo; }

	public DataVersion getVersion() { return version; }
	public void setVersion(DataVersion version) { this.version = version; }
	
	public String getArchivoVersion() { return archivoVersion; }
	public void setArchivoVersion(String archivoVersion) { this.archivoVersion = archivoVersion; }
		
	public List<DataRegistroAutorizacion> getRegistros() { return registros; }
	public void setRegistros(List<DataRegistroAutorizacion> registros) { this.registros = registros; }

	public List<DataVersion> getVersionesAutorizar() { 
		try {
			setVersionesAutorizar(ejb.getVersionesPendientes());
		} catch (Exception e) {
			System.out.println("ERROR: getVersionesAutorizar : ---" + e.getMessage());
		}
		return versionesAutorizar; 
	}
	
	public void setVersionesAutorizar(List<DataVersion> versiones) { this.versionesAutorizar = versiones; }
	
	
	/////////////////////////// OPERACIONES ////////////////////////////
		
	
	@PostConstruct
	public void init(){
		try {
			setVersion(new DataVersion());
			setVersionesAutorizar(ejb.getVersionesPendientes());
		} catch (Exception e) {
			System.out.println("ERROR init() RegistroAutorizacionBean: " + e.getMessage());
		}
	}	

	
	//// APROBAR VERSION //////////////////////////////////////////////////////
	
	
	public ArrayList<DataVersion> listarVersionesAutorizar() throws Exception{
		setVersionesAutorizar(ejb.getVersionesPendientes());
		return ejb.getVersionesPendientes();
	}	

	public void obtenerVersionAutorizar(int idVer) throws Exception{
		setVersion(ejb.obtenerVersion(idVer));
		FacesContext.getCurrentInstance().getExternalContext().redirect("versionAutorizar.xhtml");
	}
	 
	public void autorizarVersion() throws Exception{
		
		HttpSession sesion = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(true);
		String administrador = (String) sesion.getAttribute("mailUsuario");
		
		//ACA ME CAMBIA EL ESTADO
		ejb.modificarVersion(getVersion());
		
		ejb.guardarRegistroDeAutorizacion(administrador, getVersion().getIdVersion(), getMotivo());
		
		setVersionesAutorizar(ejb.getVersionesPendientes());
		
		/*Si rechazo la version o la apruebo tengo que mandar mail al proveedor notificandolo*/
		/*En caso de que se rechaze, se la tiene que listar al proveedor*/
		
		
		FacesContext.getCurrentInstance().getExternalContext().redirect("versionesListar.xhtml");
	}

	
}
